Dynamic load-balance of multi-channel requests

ABSTRACT

A multi-tenant load balancing system that includes artificial intelligence based algorithm to dynamically route requests from one or more channels to an agent best suited to process the request. The AI based algorithm routes the request based on company&#39;s business goals, agent attributes, and channel attributes. The AI based algorithm also predicts agent availability.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of, and priority to, IndianProvisional Patent Application Serial No. 201941006613, filed on Jan.20, 2019. The subject matter thereof is hereby incorporated herein byreference in its entirety.

FIELD

The present invention relates to dynamic load balancing of multi-channelrequest routing to agents.

BACKGROUND

When a business receives requests from various channels (whetherreal-time or asynchronous), a full-time supervisor generally manages therequest. By managing, the full-time supervisor routes the request to theappropriate agent.

Some businesses, however, use routing algorithms to meet their routingneeds. Conventional routing algorithms typically require the supervisorto statically configure the list of agents available in each channel,including the agent's maximum allowed load on each channel. When arequest comes in, the algorithm blindly assigns the request to the agentwith least load. When there is a spike in requests received from aparticular channel, the supervisor reallocates the agents acrosschannels accordingly. This requires continuous monitoring and planning.Moreover, when agents with a particular skill are in demand, thealgorithm continues to assign generic requests to the agents with theparticular skill increasing the wait time for processing the specialrequests.

Thus, an alternative load-balancing approach is more beneficial.

SUMMARY

Certain embodiments of the present invention may provide solutions tothe problems and needs in the art that have not yet been fullyidentified, appreciated, or solved by current routing algorithms. Forexample, some embodiments generally pertain to dynamically load balanceone or more requests in real-time.

In one embodiment, a process may include receiving a request from an enduser via one of a plurality of communication channels. The process mayalso include routing the received request to an agent best equipped tohandle the received request. The routing of the received requestincludes determining the best equipped agent based one or more businessgoals, one or more agent attributes, and one or more communicationchannel attributes.

In another embodiment, an apparatus includes one or more processors andmemory comprising a set of instructions. The set of instructions areconfigured to cause the one or more processors to receive a request froman end user device via one of a plurality of communication channels, androute the received request to an agent best equipped to handle thereceived request. The set of instructions are further configured tocause the one or more processors to determine the best equipped agentsbased on one or more business goals, one or more agent attributes, andone or more communication channel attributes.

In yet another embodiment, a load balancing system includes a loadbalancing server interfaced with a user device. The load balancingserver is configured to receive a request from the user device via oneof a plurality of communication channels. The load balancing serverincludes an enricher service module configured to extract raw data fromthe request to help identify one or more agents best equipped to handlethe request. The load balancing server also includes a task assignermodule configured to assign the request to an agent best equipped tohandle the request.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the advantages of certain embodiments of the inventionwill be readily understood, a more particular description of theinvention briefly described above will be rendered by reference tospecific embodiments that are illustrated in the appended drawings.While it should be understood that these drawings depict only typicalembodiments of the invention and are not therefore to be considered tobe limiting of its scope, the invention will be described and explainedwith additional specificity and detail through the use of theaccompanying drawings, in which:

FIG. 1 is a flow diagram illustrating a process for dynamic loadbalancing of requests, according to an embodiment of the presentinvention

FIG. 2 is a block diagram illustrating a load-balancing systemconfigured to dynamically balance the load of an incoming request,according to an embodiment of the present invention.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Some embodiments provide a scalable solution for businesses todynamically route incoming requests on multiple communication channelsto the least-loaded agent with the most appropriate skill in amulti-tenant environment. This scalable solution enables fasterresolution of customer requests. Every omni-channel agent is assignedtasks by matching parameters of skills, channel favorability, currentload, stickiness, service level agreements and certain others to createan agent-channel-task affinity score, which predicts optimal routing. Insome embodiments, the parameters are custom for each business, but canbe monitored with the in-built machine learning algorithm to optimizefor certain outcomes. Outcomes may include fastest reply, fastestresolution, most accurate resolution, least replies to resolution.Additionally, some embodiments combine traditional load balancing andskill-based routing algorithms with a new approach to achieve faster andmore accurate routing configurations. These routing configurations aremanaged by the system (e.g., an artificial intelligent (AI) algorithm)reducing or eliminating the need for human intervention after the systemis setup.

An end-customer may reach out to an agent through a variety ofcommunication channels. These communication channels include real-timechannels or asynchronous channels. Real-time channels may includemessaging applications embodied on a mobile device, live chats runningon a webpage, and phone calls, for example. Asynchronous channels mayinclude email communication, self-service, social media applications,and contact forms on a webpage.

Some embodiments pertain to a multi-tenant dynamical load balancearchitecture configured to support businesses, allowing these businessesto service their customers across various channels. In an embodiment,attributes from an incoming request and attributes associated withagents are considered by an artificial intelligent (AI) module. Thisenables a business to reduce response time. For example, the AI modulemay change the configuration in real-time, such that response times bythe agent remains low.

FIG. 1 is a flow diagram illustrating a process 100 for dynamic loadbalancing of requests, according to an embodiment of the presentinvention. In this embodiment, process 100 may begin at 102 with aqueuing module receiving a request from an end user (e.g., a customer)operating a user device. The request may be received via one of thevariety communication channels discussed above.

At 104, an enricher service module is configured to extract, from therequest, one or more attributes. These attributes may include agentskills required to process the request and, in some embodiments, theagent best suited to handle the request. Attributes may also include SLAbased on the end user and priority, group/department concerned, averagetime taken to resolve this type of requests, agents who handled previousrequests from the same end user, etc.

In some embodiments, skills required for handling the requests may befound either by a set of static rules and/or by feature extraction fromthe text content of the request by the artificial intelligence (AI)algorithm. Based on the end user segment and corresponding SLAconfiguration for the given priority of the request, the requestdeadline may be calculated. The parameters, such as group/departmentconcerned and average resolution time, are determined by the AIalgorithm based on similar tickets received in the past. Agents thathave handled previous requests from the same end user may also beconsidered with respect to historical requests data.

At 106, a queue adds (or stores) the request, including the one or moreextracted attributes. At 108, a routing engine (or module) is configuredto analyze the one or more extracted attributes associated with therequest, and assign the request to the appropriate agent. For example,the routing engine is configured to assign the request to theappropriate agent based on one or more parameters, which will bediscussed in more detail below.

Let's say, for example, that there are two agents. One is currentlyavailable, and the second agent is currently assisting another end user.If the second agent is more equipped to handle the request, the routingengine will wait until the second agent completes his or her task priorto assigning the request to the second agent. In this manner, therouting engine does not assign the request based on availability.Instead, the routing engine assigns the request based on the businessgoals, agent's attributes, and channel attributes. This way, in afurther embodiment, the routing engine is configured to remove therequest from the queue and assign the request to the agent upon theagent's completion of the ongoing request.

In another embodiment, the routing engine may include AI capability. Forexample, the routing engine may calculate resolution time of an ongoingrequest and predict availability of the agent based on the resolutiontime. In one embodiment, the routing engine analyzes the historical datawith respect to previously resolved requests and agent completion timewhen calculating the resolution time. By predicting agent availability,the routing engine keeps the request within the queue (e.g., a task waitqueue database) until the best equipped agent becomes available. Thisway, less competent agents are not assigned a request that he or she isnot capable of handling.

FIG. 2 is a block diagram illustrating a load-balancing system 200configured to dynamically balance the load of an incoming request,according to an embodiment of the present invention. In this embodiment,load-balancing system 200 includes a load balancing server 202interfacing with an end user. In an embodiment, load balancing server202 receives a request from the end user via one of communicationchannels 204. Communication channels 204 may include a chat channel, anemail channel, an phone channel, a social networking channel, and amessaging channel, for example. For example, when the end user submitsthe request through communication channel 204, enricher service module206 is configured to receive the request. The request may include rawdata such as subject, description, email address and a set of additionalproperties for a support ticket via email. The raw data may also includethe message sent by the end user for social media/chat/messagingrequests, phone number and IVR options selected for the phone call.Because the request includes raw data, enricher service module 206 isconfigured to extract the raw data from the request.

From this raw data, enricher service module 206 may also identify thetypes of agents most equipped to handle the request. Enricher servicemodule 206 may identify the types of agents based on the skills requiredfor handling the request and the agents who have handled the end user'srequests in the past. This may help determine the most preferred list ofagents in some embodiments.

A task wait queue (hereinafter “queue”) 208, which is embodied within adatabase in some embodiments, is connected to enricher service module206 and stores the request and the enriched data extracted from therequest.

Queue 208 is also connected to a routing engine 210. In someembodiments, routing engine 210 includes a core AI algorithm, whichreceives one or more inputs signals from one or more datastores 212. Oneor more datastores 212 may include business goals, agent attributes,channel attributes, historical task/request data, agent load, and agentavailability, to name a few.

Administrator of the business may select one or more of the desiredbusiness goals out of fastest reply, fastest resolution, most accurateresolution, least replies to resolution, maximum agent utilization, etc.He or she may also configure the channel attributes, such as thepriority for requests from each channel, the requests affect each other(e.g., an agent on a phone call shouldn't be assigned any chat or emailticket), etc. Number of active requests that are assigned to each agentare stored in an agent load datastore. Agent available datastore isconfigured to store which channel the agent prefers to receive requestsfrom and also whether he or she is connected to the corresponding systemfor receiving the requests. A data lake may include historical requestsdata is used to find the agents that handled requests from an end userand also for building AI models.

With the above input signals received by routing engine 210, a heuristicalgorithm for routing is developed. At the same time, the requestsstored within queue 208 are continuously prioritized by routing engine210. For example, routing engine 210 compares the business goals withthe extracted (enriched) raw data from the request and determines themost equipped agent to process the request.

In some embodiments, the algorithm may use one or more of metrics whilerouting the request. These metrics may include time taken by the agentfor first response of similar requests, time taken by the agent forresolving of similar requests, customer satisfaction (CSAT) ratingreceived by agent of similar requests, and the average number of repliesrequired for resolving of similar requests. Another metric may includethe number and type of requests each agent has been assigned to, whichcan be used to predict when the agent will become available for handlingmore requests.

In some embodiments, an administrator of the business may initiallyconfigure the business goals for the routing engine. These goals may bebased on one or more of fastest reply, fastest resolution, most accurateresolution, least replies to resolution, maximum agent utilization, etc.The routing engine may select the appropriate AI based algorithm toachieve the desired business goals.

Characteristics of the algorithm for each business goal may includefastest resolution, most accurate resolution, least replies toresolution, maximum agent utilization, fastest reply, to name a few.Fastest resolution may be achieved by selected the agent with the besthistory of resolving similar kind of requests the quickest. Mostaccurate resolution may be achieved by selected the agent, who receivedthe best CSAT in the past for similar kind of requests. Least replies toresolution may be achieved by selected the agent, who was able toresolve similar requests in the past with minimal iterations. Maximumagent utilization may be achieved by the algorithm that predicts thekind of requests expected based on the past trends, that will map thatagainst the number of agents available for each skill. Based on thisdata, the AI algorithm may reserve a few agents for skills that are indemand. This demand is continuously updated based on time of theday/week, sudden spike noticed, etc. Fastest reply may be achieved byselecting the agents with best history of sending very quick firstresponse.

In all the above cases, the AI algorithm considers typical time taken toresolve requests and the number of different type of requests receivedin optimizing what kind of requests to send to which agent. This allowsthe AI algorithm to hold a request in queue 208 until the best agent isbecomes available even though less qualified agents are available.

Routing engine may improve efficiency by selecting the agents withskills required by tasks, channel favorability, current load of agents,stickiness, service level agreements and certain other parameters.

A (task assignment) recommendation module 214, which is connected torouting engine 210, may assign or recommend which agent should beassigned the request. Task assigner module 216 may assign the request tothe appropriate agent.

Some embodiments utilize an AI algorithm to allow a business to increaseCSAT while decreasing resolution times. The AI algorithm ensures quickand accurate request distribution. Since the AI algorithm continuouslylearns about the request and agent attributes, the AI algorithm maydirect the incoming requests to the most appropriate agents. Over time,this AI algorithm improves request distribution.

The system architecture is setup for one to infinite businesses to behosted on a single machine cluster, while still being able to maintainseparate routing conditions for different businesses. Businesses canseamlessly attach more channels during runtime and still benefit fromthe load balancing.

It will be readily understood that the components of various embodimentsof the present invention, as generally described and illustrated in thefigures herein, may be arranged and designed in a wide variety ofdifferent configurations. Thus, the detailed description of theembodiments, as represented in the attached figures, is not intended tolimit the scope of the invention as claimed, but is merelyrepresentative of selected embodiments of the invention.

The features, structures, or characteristics of the invention describedthroughout this specification may be combined in any suitable manner inone or more embodiments. For example, reference throughout thisspecification to “certain embodiments,” “some embodiments,” or similarlanguage means that a particular feature, structure, or characteristicdescribed in connection with the embodiment is included in at least oneembodiment of the present invention. Thus, appearances of the phrases“in certain embodiments,” “in some embodiment,” “in other embodiments,”or similar language throughout this specification do not necessarily allrefer to the same group of embodiments and the described features,structures, or characteristics may be combined in any suitable manner inone or more embodiments.

It should be noted that reference throughout this specification tofeatures, advantages, or similar language does not imply that all of thefeatures and advantages that may be realized with the present inventionshould be or are in any single embodiment of the invention. Rather,language referring to the features and advantages is understood to meanthat a specific feature, advantage, or characteristic described inconnection with an embodiment is included in at least one embodiment ofthe present invention. Thus, discussion of the features and advantages,and similar language, throughout this specification may, but do notnecessarily, refer to the same embodiment.

Furthermore, the described features, advantages, and characteristics ofthe invention may be combined in any suitable manner in one or moreembodiments. One skilled in the relevant art will recognize that theinvention can be practiced without one or more of the specific featuresor advantages of a particular embodiment. In other instances, additionalfeatures and advantages may be recognized in certain embodiments thatmay not be present in all embodiments of the invention.

One having ordinary skill in the art will readily understand that theinvention as discussed above may be practiced with steps in a differentorder, and/or with hardware elements in configurations which aredifferent than those which are disclosed. Therefore, although theinvention has been described based upon these preferred embodiments, itwould be apparent to those of skill in the art that certainmodifications, variations, and alternative constructions would beapparent, while remaining within the spirit and scope of the invention.In order to determine the metes and bounds of the invention, therefore,reference should be made to the appended claims.

1. A computer-implemented process, comprising: receiving a request froman end user device via one of a plurality of communication channels; androuting the received request to an agent best equipped to handle thereceived request, wherein the routing of the received request comprisesdetermining the best equipped agents based on one or more businessgoals, one or more agent attributes, and one or more communicationchannel attributes.
 2. The computer-implemented process of claim 1,further comprising: extracting, from the request, one or moreattributes, wherein the one or more attributes comprises one or moreagent skills required to process the request.
 3. Thecomputer-implemented process of claim 2, wherein the one or more agentskills are defined by a set of static rules or extracted from textcontent of the request.
 4. The computer-implemented process of claim 2,further comprising: storing the request and the one or more extractedattributes associated with the request in a queue.
 5. Thecomputer-implemented process of claim 4, further comprising: analyzingthe one or more stored extracted attributes associated with the requestin order to assign the request to the agent best equipped to handle therequest.
 6. The computer-implemented process of claim 5, furthercomprising: calculating a resolution time of an ongoing request topredict availability of the agent best equipped to handle the requestbased on the resolution time.
 7. The computer-implemented process ofclaim 6, wherein the calculating of the resolution time furthercomprises analyzing historical data of previously resolved requests andan agent completion time of the agent best equipped to handle therequest.
 8. An apparatus, comprising: one or more processors; and memorycomprising a set of instructions, wherein the set of instructions areconfigured to cause the one or more processors to execute receiving arequest from an end user device via one of a plurality of communicationchannels; and routing the received request to an agent best equipped tohandle the received request, wherein the set of instructions are furtherconfigured to cause the one or more processors to execute determiningthe best equipped agents based on one or more business goals, one ormore agent attributes, and one or more communication channel attributes.9. The apparatus of claim 8, wherein the set of instructions are furtherconfigured to cause the one or more processors to execute: extracting,from the request, one or more attributes, and the one or more attributescomprises one or more agent skills required to process the request. 10.The computer-implemented process of claim 9, wherein the one or moreagent skills are defined by a set of static rules or extracted from textcontent of the request.
 11. The computer-implemented process of claim 9,wherein the set of instructions are further configured to cause the oneor more processors to execute: storing the request and the one or moreextracted attributes associated with the request in a queue.
 12. Thecomputer-implemented process of claim 11, wherein the set ofinstructions are further configured to cause the one or more processorsto execute: analyzing the one or more stored extracted attributesassociated with the request in order to assign the request to the agentbest equipped to handle the request.
 13. The computer-implementedprocess of claim 11, wherein the set of instructions are furtherconfigured to cause the one or more processors to execute: calculating aresolution time of an ongoing request to predict availability of theagent best equipped to handle the request based on the resolution time.14. The computer-implemented process of claim 13, wherein the set ofinstructions are further configured to cause the one or more processorsto execute: analyzing historical data of previously resolved requestsand an agent completion time of the agent best equipped to handle therequest.
 15. A load balancing system, comprising: a load balancingserver interfaced with a user device, configured to receive a requestfrom the user device via one of a plurality of communication channels,wherein the load balancing server comprises an enricher service moduleconfigured to extract raw data from the request to help identify one ormore agents best equipped to handle the request; and a task assignermodule is configured to assign the request to an agent best equipped tohandle the request.
 16. The load balancing system of claim 15, whereinthe plurality of communication channels comprises a chat channel, anemail channel, a phone channel, a social networking channel, and amessaging channel.
 17. The load balancing system of claim 15, whereinthe raw data comprises of subject, description, email address, a set ofadditional properties for a support ticket, a message sent by the userdevice for social media/chat/messaging requests, a phone number and IVRoptions selected for a phone call, or any combination thereof.
 18. Theload balancing system of claim 15, wherein the enricher service moduleis further configured to identify the one or more agents best equippedto handle the request based on one or more skills required for handlingthe request and one or more agents who have previously handled one ormore requests from the user device.
 19. The load balancing system ofclaim 15, wherein the server further comprises a queue interfacedbetween the enricher service module and a routing engine, wherein thequeue is configured to store the request and the raw data extracted fromthe request wherein the server comprises a recommendation moduleinterfaced between the routing engine and a task assigner module,wherein the recommendation module is configured to assign or recommendwhich agent from the one or more identified agents should be assignedthe request.
 20. The load balancing system of claim 19, wherein therouting engine comprises a core artificial intelligence algorithm and isconnected to one or more input signals from one or more datastores,wherein the one or more datastores comprises a datastore for businessgoals, a datastore for agent attributes, a datastore for channelattributes, a datastore for historical task/request data, a datastorefor agent load, and a datastore for agent availability wherein therouting engine is configured to continuously prioritize the request andone or more additional requests within the queue until the request isassigned to the agent best equipped to handle the request, wherein therouting engine compares data received via the one or more input signalswith the extracted raw data from the request to identify the one or moreagents best equipped to handle the request.